<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of CategoriaMapper
 *
 * @author felipe
 */
class App_Model_CategoriaMapper extends Voitech_Mapper {
    
    public function __construct(App_Model_Categoria $obModel) {
        $this->obModel = $obModel;        
    }
    
    public function buscarPorId() {        
        $obRow = App_Model_Db_Categoria::build()->buscarId($this->obModel->getCoCategoria());
        if(empty($obRow))
        {
            return;
        }
        $this->carregar($obRow);               
        return $this;
    }
    
    public function carregar(stdClass $obRow) {                   
        $this->obModel->setCoCategoria($obRow->co_categoria)
                       ->setNoCategoria($obRow->no_categoria)
                       ->setStAtivo($obRow->st_ativo)
                       ->setExcluir($obRow->excluir)
                       ->setDtCadastro($obRow->dt_cadastro);
        return $this;
    }    
    
    public function cadastrar() {
        $arCategoria = $this->retornarArrayPopulado();     
        $arCategoria['co_pessoa_cadastro'] = $this->obModel->getObUsuarioCadastro()->getCoPessoa();
        return App_Model_Db_Categoria::build()->insert($arCategoria);                                         
    }
    
    public function alterar(){
        $arCategoria = $this->retornarArrayPopulado();        
        return App_Model_Db_Categoria::build()->update($arCategoria,App_Model_Db_Categoria::build()->getAdapter()->quoteInto('co_categoria = ?',$this->obModel->getCoCategoria()));                
    }
    
    public function ativar() {
        if($this->obModel->getCoCategoria() == ''){
            throw new Voitech_Exception('Falta cod. categoria');
        }
        $arrCategoria = array('st_ativo'=>'S');       
        return App_Model_Db_Categoria::build()->update($arrCategoria,App_Model_Db_Categoria::build()->getAdapter()->quoteInto('co_categoria = ?',$this->obModel->getCoCategoria()));                
    }
    
    public function desativar() {
        if($this->obModel->getCoCategoria() == ''){
            throw new Voitech_Exception('Falta cod. categoria');
        }
        $arrCategoria = array('st_ativo'=>'N');
        return App_Model_Db_Categoria::build()->update($arrCategoria
                                                      ,App_Model_Db_Categoria::build()->getAdapter()->quoteInto('co_categoria = ?',$this->obModel->getCoCategoria()));                
    }
    
    public function retornarArrayPopulado() {
        $arrCategoria = array('no_categoria'=>$this->obModel->getNoCategoria());
       
        if( $this->obModel->getCoCategoria() != '' ) {
            $arrCategoria['co_categoria'] = $this->obModel->getCoCategoria();
        }
        return $arrCategoria;
   }
   
    public function excluir() {
        if($this->obModel->getCoCategoria() == ''){
            throw new Voitech_Exception('Falta cod. categoria');
        }
        return App_Model_Db_Categoria::build()->delete(App_Model_Db_Categoria::build()->getAdapter()->quoteInto('co_categoria = ?',$this->obModel->getCoCategoria()));                
    }   
}